import { uuid, timestamp, boolean } from 'drizzle-orm/pg-core';

/**
 * 完整审计字段定义
 * 
 * 包含所有业务表通用的审计字段：
 * - createdBy: 创建人ID
 * - createdAt: 创建时间
 * - updatedBy: 更新人ID
 * - updatedAt: 更新时间
 * - isDeleted: 是否删除（软删除）
 * 
 * @example
 * export const sysUser = pgTable('sys_user', {
 *   id: uuid('id').primaryKey().default(sql`uuidv7()`),
 *   username: varchar('username', { length: 50 }).notNull(),
 *   ...auditFields(),
 * });
 */
export function auditFields() {
  return {
    /** 创建人ID */
    createdBy: uuid('created_by'),
    /** 创建时间 */
    createdAt: timestamp('created_at', { precision: 0, withTimezone: true }).defaultNow(),
    /** 更新人ID */
    updatedBy: uuid('updated_by'),
    /** 更新时间 */
    updatedAt: timestamp('updated_at', { precision: 0, withTimezone: true }).defaultNow(),
    /** 是否删除（软删除） */
    isDeleted: boolean('is_deleted').notNull().default(false),
  } as const;
}

/**
 * 简化审计字段定义（用于关联表）
 * 
 * 只包含创建相关的字段：
 * - createdBy: 创建人ID
 * - createdAt: 创建时间
 * 
 * @example
 * export const sysUserRole = pgTable('sys_user_role', {
 *   id: uuid('id').primaryKey().default(sql`uuidv7()`),
 *   userId: uuid('user_id').notNull(),
 *   roleId: uuid('role_id').notNull(),
 *   ...simpleAuditFields(),
 * });
 */
export function simpleAuditFields() {
  return {
    /** 创建人ID */
    createdBy: uuid('created_by'),
    /** 创建时间 */
    createdAt: timestamp('created_at', { precision: 0, withTimezone: true }).defaultNow(),
  } as const;
}

